backlog: pre-landing sanitizer for ferry lint (Aaron Otto-119)#313
backlog: pre-landing sanitizer for ferry lint (Aaron Otto-119)#313
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
bec3f90 to
62a2ce3
Compare
There was a problem hiding this comment.
Pull request overview
Adds a new backlog item capturing the idea of an automated “pre-landing sanitizer” to mechanically fix recurring markdownlint-trigger patterns observed when absorbing Amara ferry content, reducing manual cleanup after CI failures.
Changes:
- Add a P2-section backlog entry proposing an auto-sanitizer (script + integration hook/skill step) for common markdownlint-triggering patterns.
- Document the initial scope, candidate fixes, and integration points for the sanitizer.
62a2ce3 to
7ec5478
Compare
7ec5478 to
0f0cc55
Compare
Filed per Aaron Otto-119 closing directive: 'also we should backlog longer-term, a pre-landing sanitizer could handle this automatically.' Captures systemic lint-triggering patterns observed Otto-118+119 in verbatim-preserved Amara ferry content: line-start #<number> → H1 mis-parse; line-wrapped headings; missing blanks-around- lists; trailing whitespace. Current manual per-ferry cleanup pattern works; sanitizer automates. P3 convenience; S+S effort. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
0f0cc55 to
81adecd
Compare
Pull request was closed
…+ #320) PRs #313 (pre-landing sanitizer), #314 (claude --agent flag research), and #320 (schema-as-graph) all hit DIRTY state from positional rebase conflicts — each added a row at top of P2, but successive merges of adjacent BACKLOG PRs kept moving the P2 top anchor. Each branch's append collided with main's now-different top. Closed all three and re-filed in a single consolidated PR above the KSK-naming row. Order chosen by directive date: 1. Schema-as-Graph (Otto-127, most recent) 2. Research claude --agent flag (Otto-120) 3. Pre-landing sanitizer (Otto-119) Superseded PRs: - #313 backlog/pre-landing-sanitizer-for-ferry-lint - #314 backlog/claude-cli-agent-flag-research-map - #320 backlog/graph-as-schema-first-class-entities Content preserved + condensed in this PR. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…320) (#325) * backlog: resurrect 3 BACKLOG rows consolidated (supersedes #313 + #314 + #320) PRs #313 (pre-landing sanitizer), #314 (claude --agent flag research), and #320 (schema-as-graph) all hit DIRTY state from positional rebase conflicts — each added a row at top of P2, but successive merges of adjacent BACKLOG PRs kept moving the P2 top anchor. Each branch's append collided with main's now-different top. Closed all three and re-filed in a single consolidated PR above the KSK-naming row. Order chosen by directive date: 1. Schema-as-Graph (Otto-127, most recent) 2. Research claude --agent flag (Otto-120) 3. Pre-landing sanitizer (Otto-119) Superseded PRs: - #313 backlog/pre-landing-sanitizer-for-ferry-lint - #314 backlog/claude-cli-agent-flag-research-map - #320 backlog/graph-as-schema-first-class-entities Content preserved + condensed in this PR. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(#325): 2 review threads — priority/section alignment + <agent_name> inline-code escape --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
|
Reopening per 2026-04-24 closed-PR audit (maintainer directive to recover over-closes). This PR captured an Aaron directive into Status note: this PR adds rows to
Retractability-in-action per Otto-238: visible reopen; no silent reversal. |
|
Re-closing — my earlier reopen was a false recovery. Audit of Maintainer flagged queue saturation (73 open PRs on LFG). Re-closing false-recovery reopens drops the count without losing content. Per retractability-in-action (Otto-238): visible re-close with rationale, not silent delete. If any specific row from this PR needs recovery that I missed in the audit, reopen again with a pointer to the missing content. |
…-Financial-Groupgh-401 runbook (interim memory home) (#104) The post-double-hop close artifacts: - docs/active-trajectory.md: priority section RE-CLOSED (rescinds the "blocking all other work" framing now that 0/0/0 holds again at 17a2637). New "Post-double-hop sequencing" block lists the next-lane order per Amara: Lucent-Financial-Group#315 (hourly budget), Lucent-Financial-Group#319 (bounded-retry CodeQL), Lucent-Financial-Group#318 (docs/ops taxonomy), Lucent-Financial-Group#317 (tick-fast-path), Lucent-Financial-Group#316 (absorbed into Lucent-Financial-Group#318), Lucent-Financial-Group#313/Lucent-Financial-Group#314, then branch/worktree recovery. - docs/hygiene-history/ticks/2026/04/29/1452Z.md: tick shard for the PR Lucent-Financial-Group#846 review wave (4 unresolved threads — 3× Copilot P1 + 1× Codex P2). Codex caught the structurally-deepest bug (host segment parsed but discarded silently before gh api graphql); Copilot caught the surface P1s. Review-ensemble complementarity. - docs/hygiene-history/ticks/2026/04/29/1517Z.md: tick shard for the 0/0/0 re-close ceremony at 15:17:09Z. Force-with-lease + ruleset toggle/restore + verify. Aaron's "why are you waiting on me" flagged as future-self lesson on standing-authority cadence (Otto-359 candidate). - memory/reference_gh_cli_graphql_401_diagnostic_runbook_2026_04_29.md: diagnostic runbook for the gh CLI auth glitch where `gh api graphql` 401s while `gh api -X POST graphql` works. Amara framing: diagnostic note, not doctrine yet. INTERIM HOME: the runbook lives in memory/ for this round; long-term home is docs/ops/runbooks/gh-cli-auth-401.md per task Lucent-Financial-Group#318 (docs/ops taxonomy — runbooks/patterns/incidents/ tree). - memory/MEMORY.md: paired index entry for the runbook above (per memory-index-integrity rule). Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* ops(0-0-0): post-double-hop close — trajectory + tick shards + gh-401 runbook (interim memory home) The post-double-hop close artifacts: - docs/active-trajectory.md: priority section RE-CLOSED (rescinds the "blocking all other work" framing now that 0/0/0 holds again at 17a2637). New "Post-double-hop sequencing" block lists the next-lane order per Amara: #315 (hourly budget), #319 (bounded-retry CodeQL), #318 (docs/ops taxonomy), #317 (tick-fast-path), #316 (absorbed into #318), #313/#314, then branch/worktree recovery. - docs/hygiene-history/ticks/2026/04/29/1452Z.md: tick shard for the PR #846 review wave (4 unresolved threads — 3× Copilot P1 + 1× Codex P2). Codex caught the structurally-deepest bug (host segment parsed but discarded silently before gh api graphql); Copilot caught the surface P1s. Review-ensemble complementarity. - docs/hygiene-history/ticks/2026/04/29/1517Z.md: tick shard for the 0/0/0 re-close ceremony at 15:17:09Z. Force-with-lease + ruleset toggle/restore + verify. Aaron's "why are you waiting on me" flagged as future-self lesson on standing-authority cadence (Otto-359 candidate). - memory/reference_gh_cli_graphql_401_diagnostic_runbook_2026_04_29.md: diagnostic runbook for the gh CLI auth glitch where `gh api graphql` 401s while `gh api -X POST graphql` works. Amara framing: diagnostic note, not doctrine yet. INTERIM HOME: the runbook lives in memory/ for this round; long-term home is docs/ops/runbooks/gh-cli-auth-401.md per task #318 (docs/ops taxonomy — runbooks/patterns/incidents/ tree). - memory/MEMORY.md: paired index entry for the runbook above (per memory-index-integrity rule). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ops(0-0-0): #847 Codex P2 — correct gh-401 runbook misdiagnosis (X POST is a no-op) Codex P2 on PR #847: my prior runbook claimed `gh api graphql -f query='...'` defaults to GET and that `-X POST` was the workaround. That's wrong: `gh api` already sends POST when `-f` or `-F` parameters are present (per `gh api --help`). The earlier "the X flag fixed it" observation was actually the upstream auth-service glitch resolving in the few seconds between attempts — misattributed. Empirical verification: GH_DEBUG=api gh api graphql -f query='query { viewer { login } }' 2>&1 \ | grep -E '^> POST|^> GET' # > POST /graphql HTTP/1.1 ← already POST without -X Updated runbook to: - Frame the failure mode correctly: transient upstream auth-service hiccup that recovers on its own (~30-90s window). Bounded retry is the answer, not flag-magic. - Add explicit "Common misdiagnosis (corrected)" section so future- self doesn't re-derive the wrong fix. - Keep CodeQL SARIF upload 401 as sibling failure mode (independently observed in CodeQL run logs, not the misattributed-flag failure). - Cross-reference task #319 (bounded-retry CodeQL) for the durable fix Aaron specified per DST discipline. Lesson captured in trigger-memory section: claim-without-verify is the failure mode the Drain-Log Claim Verification Discipline (task #316) catches. The rule applies to runbook-authoring in real time, not just retroactive drain-log audits. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ops(0-0-0): #847 retrigger — clear stale submit-nuget failure on deleted misnamed branch Earlier in this PR's history, a push hit a misnamed branch on LFG (post-0-0-0-reclose-followup-acehack-2026-04-29 instead of the lfg-named counterpart). I corrected the push and the misnamed branch was later auto-deleted. However, the submit-nuget workflow had already been triggered against that branch and is now stuck because a rerun cannot re-fetch the deleted ref. The same SHA (65b20ee) has a SUCCESS run on the correct lfg-named branch (run 25117920779), but the rollup also retains the FAILURE run from the deleted branch (run 25117911328). Auto-merge BLOCKED on the stale failure status. Empty commit retrigger to land a fresh SHA where workflows fire only on the correct branch context. No content change. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ops(0-0-0): #847 review wave 2 — Copilot + 2× Codex corrections Three unresolved review threads on #847 head, all valid: 1. Copilot — tick shard filename mismatch `1452Z.md` filename vs `14:58:00Z` row timestamp confused chronological sort. Renamed file to `1458Z.md` to match the row timestamp (the row had been revised when the round-close landed, but I forgot to rename the file). 2. Codex P1 — `gh api rate_limit` is not a reliable auth-health signal. Per GitHub REST docs, `GET /rate_limit` succeeds anonymously when only public resources are queried, so a missing/revoked token can show as healthy on this check. Replaced runbook step 3 with `gh api user` (requires auth, no anonymous fallback). Also corrected the "still works" block to call out the same caveat with explicit Codex P1 credit + cross-reference to PR #847. 3. Codex P2 — frontmatter description over-asserted "not a token problem" while the body documents token-side branches. Softened to "FIRST hypothesis is transient upstream... always rule out token-side issues before assuming transient." Indexes/previews surfacing the description now don't short-circuit to "must be transient, retry." The Codex P1 correction is structurally important: a runbook that misclassifies "token problem" as "transient" delays the real remediation path. Caught proactively before any operator ran the broken triage. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ops(0-0-0): #847 Codex P2 — fix stale -X POST claim in MEMORY.md index entry Codex P2 caught that the MEMORY.md index entry I added still referenced the old misdiagnosis (gh api -X POST works while gh api graphql doesn't). The runbook itself was corrected, but the index entry wasn't updated to match — readers seeing the index first would be sent back toward the already-invalidated method-switch theory instead of the intended transient-auth/token diagnosis. Updated MEMORY.md index entry to: - Remove the -X POST contrast claim - Frame as "transient upstream auth-service 401s" first-hypothesis - Cross-reference the Codex P2 correction with explicit credit - Note token-side cases explicitly ("always rule out token-side issues — expired/revoked/SSO — before assuming transient") Future-self lesson reinforced: when correcting a substrate file, update ALL surfaces that reference its claims — body text, frontmatter, INDEX entries, cross-refs in other files. Codex P2 caught what would have been a silent-state-divergence between the runbook and its index. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ops(0-0-0): #847 Copilot wave 4 — disambiguate session-task IDs from GitHub PR/issue numbers Copilot caught that committed substrate references like `#319` auto-link to GitHub PR/issue 319 (a closed Graph operator-algebra PR), not to the session-local TaskList task 319 (bounded-retry CodeQL flakes) I intended. This is a generalized substrate-discipline issue: my TaskList tool's IDs share the `#NNN` namespace with GitHub PR/issue numbers and silently mis-link. Verified the collision against LFG/Zeta: task 313 → GH PR/issue 313: backlog: pre-landing sanitizer for ferry lint [closed] task 314 → GH PR/issue 314: backlog: claude --agent harness flag [closed] task 315 → GH PR/issue 315: core: Veridicality.canonicalKey [closed] task 316 → GH PR/issue 316: adr: Graph substrate ZSet-backed retraction [closed] task 317 → GH PR/issue 317: core: Graph substrate skeleton [closed] task 318 → GH PR/issue 318: backlog: P3 KSK naming definition doc [closed] task 319 → GH PR/issue 319: core: Graph operator-algebra composition [closed] task 320 → GH PR/issue 320: backlog: Schema-as-Graph first-class entities [closed] task 321 → GH PR/issue 321: core: Graph.largestEigenvalue power iteration [closed] ALL 9 session-task IDs from this session collide. Sweep: replaced `#NNN` → `task NNN` (no hash) in committed substrate where the reference is to a session-local task. Real GitHub PR/commit refs (#846, #847, #101, #103, #845, etc.) keep their `#` prefix. Files swept (22 total replacements): - docs/active-trajectory.md (8) - docs/hygiene-history/ticks/2026/04/29/1517Z.md (9) - memory/reference_gh_cli_graphql_401_diagnostic_runbook_2026_04_29.md (3) - memory/MEMORY.md (2) Lesson for future-self: TaskCreate/TaskList IDs are session-local and share namespace with GitHub PR/issue numbers. When writing committed substrate that references them, use `task NNN` (no hash) format. The hash-prefix is reserved for real GitHub references that should auto-link. This composes with the Drain-Log Claim Verification Discipline + the index-vs-body single-source-of-truth discipline — claims about other artifacts must reference the right artifact. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Files Aaron Otto-119 directive 'we should backlog longer-term, a pre-landing sanitizer could handle this automatically.' Captures the Otto-118+119 observed pattern.
🤖 Generated with Claude Code